setTimeout(() => {
  console.log(this);
}, 1000);
//setTimeout内部是独立调用传入的函数

//数组

var arr = [1, 2, 3];
arr.forEach(function (item) {
  console.log(this, item);
}, arr);
arr.map(function (item) {
  console.log(this, item);
}, arr);
arr.reduce(function (prev, item) {
  console.log(this, prev, item);
  return prev + item;
}, 0);

//this 的优先级
// 默认-》隐式 -〉 显式 -》new -》箭头函数

// var obj = {
//   age: 18,
//   bar: function () {
//     console.log(this);
//   },
// };
// obj.bar.call("456");

// var bar = obj.bar.bind("bind");
// bar();

function foo() {
  console.log(this);
}
var obj = {
  name: "obj",
  foo: foo.bind("bind"),
};
obj.foo();
